#include <iostream>
#include <iomanip>
#include <string>
#include <vector>

using namespace std;

typedef long long ll;

int n;
double watercost;
vector<double> watereffects, fertcost, ferteffects, needed;

const double eps = 1e-5;

inline double f(double w) {
	double cost = watercost * w;
	for (int i = 0; i < n; i++) {
		double ost = needed[i] - watereffects[i] * w;
		if (ost > 0) {
			double fertneed = ost / ferteffects[i];
			double addcost = fertneed * fertcost[i];
			cost += addcost;
		}
	}

	return cost;
}

int main(){
	while (cin >> n && n) {
		cin >> watercost;
		watereffects.resize(n); fertcost.resize(n); ferteffects.resize(n); needed.resize(n);
		for (int i = 0; i < n; i++) {
			cin >> watereffects[i] >> fertcost[i] >> ferteffects[i] >> needed[i];
		}

		double l = 0, r = 1e9;
		while (abs(r - l) > eps) {
			double m1 = l + (r - l) / 3, m2 = r - (r - l) / 3;
			if (f(m1) > f(m2)) l = m1;
			else r = m2;
		}

		cout << fixed << setprecision(6) << f((l + r) / 2) << endl;
	}

	return 0;
}